﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Web;
using System.Web.Mvc;

using Mvc.XForms.Controls.Formatters;
using Mvc.XForms.Controls.Settings;

namespace Mvc.XForms.Controls {
	public interface IContextBase<TContext> : IContainerControl<TContext> {
		GroupSettings<T> Group<T>(Expression<Func<TContext, T>> bind);
		RepeatSettings<T> Repeat<T>(Expression<Func<TContext, IEnumerable<T>>> bind);
		SelectSettings Select<TEnum>(Expression<Func<TContext, IEnumerable<TEnum>>> enumBind);
		SelectSettings Select<T>(Expression<Func<TContext, IEnumerable<T>>> bind, IEnumerable<T> items);
		SelectSettings Select<T>(Expression<Func<TContext, IEnumerable<T>>> bind, IEnumerable<T> items, Expression<Func<T, object>> valueSelector, Func<T, object> textSelector);
		Select1Settings Select1<TEnum>(Expression<Func<TContext, TEnum>> enumBind);
		Select1Settings Select1<T>(Expression<Func<TContext, T>> bind, IEnumerable<T> items);
		Select1Settings Select1<T>(Expression<Func<TContext, T>> bind, IEnumerable<T> items, Expression<Func<T, object>> valueSelector, Func<T, object> textSelector);
		//SwitchSettings Switch();
	}
}
